package com.hqq.exercise.array;

/**
 * OrderOddBeforeEven 调整数组顺序使奇数位于偶数前面
 * 题目描述:
 * 输入一个整数数组 实现一个函数来调整该函数数组中数字的顺序
 * 使得所有的奇数位于数组的前半部分 所有的偶数位于数组的后半部分
 * 思路:
 * 从前往后扫描偶数 从后往前扫描奇数 交换二者位置
 * Created by heqianqian on 2017/8/10.
 */
public class OrderOddBeforeEven {

    public static void order(int[] number) {
        int startIndex = 0;
        int endIndex = number.length - 1;
        while (startIndex < endIndex) {
            if (startIndex < endIndex && !isEven(number[startIndex])) {//从前往后查找偶数
                startIndex++;
            }
            if (startIndex < endIndex && isEven(number[endIndex])) {//从后往前查找奇数
                endIndex--;
            }
            if (startIndex < endIndex) {
                int temp = number[startIndex];
                number[startIndex] = number[endIndex];
                number[endIndex] = temp;
            }
        }
    }

    private static boolean isEven(int number) {
        return number % 2 == 0;
    }
}
